﻿/*!
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

using System;
using System.Runtime.Serialization;

namespace Pittypat.Data
{
    /// <summary>
    /// 因为某个错误而导致事务回滚时使用的异常。
    /// </summary>
    /// <remarks>
    /// 该类型主要供内部使用，通常不必由开发者自己使用。
    /// </remarks>
    [Serializable]
    public sealed class TransactionRollbackException : Exception
    {
        /// <summary>
        /// 初始化 <see cref="TransactionRollbackException"/> 类的新实例。
        /// </summary>
        /// <remarks>
        /// 默认的错误消息为 "事务已经回滚。"。
        /// </remarks>
        public TransactionRollbackException()
            : this("事务已经回滚。")
        {
        }

        /// <summary>
        /// 使用错误消息初始化 <see cref="TransactionRollbackException"/> 类的新实例。
        /// </summary>
        /// <param name="message">错误消息。</param>
        public TransactionRollbackException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// 使用内部异常初始化 <see cref="TransactionRollbackException"/> 类的新实例。
        /// </summary>
        /// <param name="innerException">内部异常。</param>
        public TransactionRollbackException(Exception innerException)
            : base(innerException.Message, innerException)
        {
        }

        /// <summary>
        /// 使用错误消息和内部异常初始化 <see cref="TransactionRollbackException"/> 类的新实例。
        /// </summary>
        /// <param name="message">错误消息。</param>
        /// <param name="innerException">内部异常。</param>
        public TransactionRollbackException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// 使用指定的序列化信息初始化 <see cref="TransactionRollbackException"/> 类的新实例。
        /// </summary>
        /// <param name="info">包含异常数据的 SerializationInfo。</param>
        /// <param name="context">序列化上下文。</param>
        public TransactionRollbackException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
        }
    }
}
